Introducción a DDL
DDL (Data Definition Language) es el conjunto de comandos SQL encargado de definir la estructura de una base de datos.
Con DDL se crean tablas, bases de datos, restricciones, relaciones y estructuras permanentes. Es la parte del lenguaje SQL que construye la arquitectura del sistema.
Principales comandos DDL
| Comando | Función |
|---|---|
| CREATE | Crear objetos |
| ALTER | Modificar estructuras |
| DROP | Eliminar objetos |
| TRUNCATE | Vaciar tablas |
Ejemplo CREATE DATABASE
CREATE DATABASE academia;
Este comando crea una base de datos vacía llamada academia. Todavía no contiene tablas ni registros.
Ejemplo CREATE TABLE
CREATE TABLE alumnos (
id_alumno INT PRIMARY KEY,
nombre VARCHAR(100),
edad INT
);
Este comando crea una tabla llamada alumnos.
- id_alumno: identificador único.
- VARCHAR(100): texto variable de hasta 100 caracteres.
- PRIMARY KEY: garantiza unicidad.
Tipos de datos DDL
Cada columna necesita un tipo de dato adecuado. Elegir correctamente el tipo mejora rendimiento, integridad y almacenamiento.
Tipos numéricos
| Tipo | Uso |
|---|---|
| INT | Números enteros |
| DECIMAL | Valores monetarios |
| FLOAT | Números decimales aproximados |
Tipos de texto
| Tipo | Uso |
|---|---|
| CHAR | Texto fijo |
| VARCHAR | Texto variable |
| TEXT | Texto largo |
Tipos de fecha
- DATE
- TIME
- DATETIME
- TIMESTAMP
CREATE TABLE productos (
id_producto INT PRIMARY KEY,
nombre VARCHAR(120),
precio DECIMAL(10,2),
fecha_creacion DATE
);
Explicación
- DECIMAL(10,2): hasta 10 dígitos y 2 decimales.
- DATE: almacena fechas válidas.
- VARCHAR: ahorra espacio frente a CHAR.
Restricciones DDL
Las restricciones garantizan la integridad y coherencia de los datos.
PRIMARY KEY
Identifica registros únicos.
FOREIGN KEY
Relaciona tablas entre sí.
NOT NULL
Impide valores vacíos.
UNIQUE
Evita duplicados.
CHECK
Valida condiciones.
CREATE TABLE usuarios (
id_usuario INT PRIMARY KEY,
email VARCHAR(120) UNIQUE,
edad INT CHECK (edad >= 18),
nombre VARCHAR(100) NOT NULL
);
Explicación del ejemplo
- email no puede repetirse.
- edad debe ser mayor o igual a 18.
- nombre es obligatorio.
Ejemplo con Domestika
Una plataforma como Domestika necesita gestionar usuarios, cursos e inscripciones.
Diseño de tablas
CREATE TABLE cursos (
id_curso INT PRIMARY KEY,
titulo VARCHAR(150),
precio DECIMAL(8,2)
);
CREATE TABLE usuarios (
id_usuario INT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(120) UNIQUE
);
CREATE TABLE inscripciones (
id_usuario INT,
id_curso INT,
fecha DATE,
PRIMARY KEY(id_usuario,id_curso),
FOREIGN KEY(id_usuario)
REFERENCES usuarios(id_usuario),
FOREIGN KEY(id_curso)
REFERENCES cursos(id_curso)
);
Qué ocurre aquí
- usuarios almacena alumnos.
- cursos almacena cursos.
- inscripciones conecta usuarios y cursos.
Introducción a DML
DML (Data Manipulation Language) permite manipular la información almacenada.
Mientras DDL crea estructuras, DML trabaja con los datos.
Comandos principales
| Comando | Función |
|---|---|
| INSERT | Insertar registros |
| SELECT | Consultar datos |
| UPDATE | Modificar registros |
| DELETE | Eliminar registros |
Sentencias esenciales de DML
INSERT
INSERT INTO alumnos
VALUES (1,'Ana',20);
Inserta un nuevo registro.
SELECT
SELECT * FROM alumnos;
Consulta todos los registros.
UPDATE
UPDATE alumnos
SET edad = 21
WHERE id_alumno = 1;
Modifica registros existentes.
DELETE
DELETE FROM alumnos
WHERE id_alumno = 1;
Elimina filas concretas.
Importancia del WHERE
Sin WHERE, UPDATE y DELETE afectan a TODA la tabla.
Otros comandos y transacciones
COMMIT
Confirma cambios permanentemente.
ROLLBACK
Deshace cambios no confirmados.
START TRANSACTION
Inicia una transacción.
START TRANSACTION;
UPDATE cuentas
SET saldo = saldo - 100
WHERE id = 1;
UPDATE cuentas
SET saldo = saldo + 100
WHERE id = 2;
COMMIT;
¿Qué consigue?
Garantiza que ambas operaciones se ejecuten juntas. Si una falla, puede hacerse ROLLBACK.
Ejemplo con Zara Online Store
Una tienda online necesita gestionar productos, clientes y pedidos.
CREATE TABLE productos (
id_producto INT PRIMARY KEY,
nombre VARCHAR(120),
stock INT,
precio DECIMAL(10,2)
);
INSERT INTO productos
VALUES (1,'Chaqueta Denim',15,49.99);
SELECT * FROM productos;
Explicación
- CREATE TABLE crea la estructura.
- INSERT añade productos.
- SELECT consulta el catálogo.
Actualización de stock
UPDATE productos
SET stock = stock - 1
WHERE id_producto = 1;
Integración de DDL y DML
DDL y DML trabajan juntos continuamente.
| DDL | DML |
|---|---|
| Crea estructuras | Manipula datos |
| CREATE TABLE | INSERT |
| ALTER | UPDATE |
CREATE TABLE clientes (
id_cliente INT PRIMARY KEY,
nombre VARCHAR(100)
);
INSERT INTO clientes
VALUES (1,'Carlos');
Secuencia lógica y principios clave
Flujo habitual
- Diseñar modelo E-R.
- Crear tablas con DDL.
- Aplicar restricciones.
- Insertar datos con DML.
- Consultar y actualizar información.
- Gestionar transacciones.
Principios importantes
- Integridad antes que velocidad.
- Normalización correcta.
- Uso adecuado de claves.
- Seguridad y permisos.
Ejemplo con HotelDB
HotelDB necesita gestionar habitaciones, clientes y reservas.
CREATE TABLE habitaciones (
id_habitacion INT PRIMARY KEY,
numero INT,
precio DECIMAL(10,2)
);
CREATE TABLE clientes (
id_cliente INT PRIMARY KEY,
nombre VARCHAR(100)
);
CREATE TABLE reservas (
id_reserva INT PRIMARY KEY,
id_cliente INT,
id_habitacion INT,
fecha_entrada DATE,
fecha_salida DATE,
FOREIGN KEY(id_cliente)
REFERENCES clientes(id_cliente),
FOREIGN KEY(id_habitacion)
REFERENCES habitaciones(id_habitacion)
);
Inserción de datos
INSERT INTO clientes
VALUES (1,'Laura');
INSERT INTO habitaciones
VALUES (101,301,120.00);
Consulta
SELECT *
FROM habitaciones
WHERE precio > 100;
Algunos consejos
Buenas prácticas
- Usa nombres coherentes.
- Aplica PRIMARY KEY siempre.
- Evita NULL innecesarios.
- Haz backups frecuentes.
- Usa transacciones en operaciones críticas.
- Documenta tablas y relaciones.
Herramientas recomendadas
- MySQL Workbench
- DBeaver
- pgAdmin
- Oracle SQL Developer